home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / lightwave / lwmlist / 95.lightwave-10 / 000864_owner-lightwav…mail.webcom.com_Sun Oct 15 19:57:20 1995.msg < prev    next >
Internet Message Format  |  1995-11-07  |  11KB

  1. Received: by mail.webcom.com
  2.     (1.37.109.15/16.2) id AA193822240; Sun, 15 Oct 1995 19:57:20 -0700
  3. Return-Path: <owner-lightwave@mail.webcom.com>
  4. Received: from netcom5.netcom.com by mail.webcom.com with ESMTP
  5.     (1.37.109.15/16.2) id AA193762236; Sun, 15 Oct 1995 19:57:16 -0700
  6. Received: by netcom5.netcom.com (8.6.12/Netcom)
  7.     id TAA26317; Sun, 15 Oct 1995 19:49:10 -0700
  8. From: bhood@netcom.com (robert hood)
  9. Message-Id: <199510160249.TAA26317@netcom5.netcom.com>
  10. Subject: And now, for my next trick...
  11. To: lightwave@mail.webcom.com
  12. Date: Sun, 15 Oct 1995 19:49:09 -0700 (PDT)
  13. Cc: lwplugin-l@netcom.com
  14. X-Mailer: ELM [version 2.4 PL23]
  15. Mime-Version: 1.0
  16. Content-Type: text/plain; charset=US-ASCII
  17. Content-Transfer-Encoding: 7bit
  18. Content-Length: 9787      
  19. Sender: owner-lightwave@mail.webcom.com
  20. Precedence: bulk
  21.  
  22. Hold on to your seats...
  23.  
  24. It gives me the greatest of pleasure to be able to announce my next plugin.
  25. I've been working on this plugin day and night for the last two weeks (even
  26. at my day job - shhhh =|^), and have been alpha testing it for the last
  27. three days with very pleasing results.  I still have a number of mechanisms
  28. that aren't functioning properly, but it should be ready for beta testing
  29. soon.  Consider this a teaser.  =|^)
  30.  
  31. This plugin will only be available commercially (i.e., this one won't be
  32. free, but it will be affordable), and, initially, only available for
  33. the Intel platform.  It's working name is "BML," which doesn't really
  34. stand for anything concrete right now.  In fact, it has represented a
  35. few choice expletives over the last fourteen days, but it generally
  36. stands for "Bob's Modeler Language."
  37.  
  38. That's right, boys and girls, you can stop asking me to port your favorite
  39. ARexx plugins, because I'm giving you the ability to DO IT YOURSELF!
  40.  
  41. BML looks an awful lot like C (sue me, I'm a C programmer =|^), but
  42. it still provides you with the flexibility of a scripting langauge.  Some
  43. of BML's features include:
  44.  
  45.     - array. number, string, and vector data types
  46.     - user-defined functions (not quite perfected, but almost there)
  47.     - access to most all Modeler functionality, including
  48.            Requester
  49.            Mesh Edit operations
  50.            Commands (rotate, move, etc.)
  51.            Font support
  52.     - internal functions, including
  53.            Mathematical operations (sin, sqrt, log, etc.)
  54.            File handling classes
  55.            Convenience functions (center, extent, randu, etc.)
  56.  
  57. It has nearly 50 predefined keyword values:
  58.  
  59.     PI           ADD              VOLUME             SELECTED
  60.     READ         SHARP            CONNECT            UNSELECTED
  61.     WRITE        BUFFERED         NPEQ               ABORT
  62.     APPEND       KNOTS            NPLT               STACK
  63.     X            LENGTH           NPGT               START
  64.     Y            CORE             VOLEXCL            END
  65.     Z            TUNNEL           VOLINCL            DETAIL
  66.     GAUSSIAN     SLICE            NVEQ               nil
  67.     UNIFORM      STENCIL          NVLT               true/TRUE
  68.     NORMAL       FLAT             NVGT               false/FALSE
  69.     RADIAL       SMOOTH           SURFACE
  70.     UNION        METAFORM         FACE
  71.     SUBTRACT     SET              CURVE
  72.     INTERSECT    CLEAR            NONPLANAR
  73.  
  74. And over 180 functions (in the current alpha phase);
  75.  
  76.     sqrt()       translate()      pole()             sel_polygon()
  77.     exp()        info()           bend()             sel_invert()
  78.     log()        warn()           jitter()           sel_hide()
  79.     sin()        error()          smooth()           setsurface()
  80.     cos()        file()           quantize()         getdefaultsurface()
  81.     tan()        fileexists()     mergepoints()      changesurface()
  82.     asin()       filedelete()     makebox()          nextsurface()
  83.     acos()       center()         makeball()         renamesurface()
  84.     atan()       extent()         maketesball()      createsurface()
  85.     random()     size()           makedisc()         fontcount()
  86.     abs()        number()         makecone()         fontindex()
  87.     ceil()       vector()         maketext()         fontname()
  88.     floor()      string()         lathe()            fontload()
  89.     cosh()       new()            extrude()          fontclear()
  90.     mod()        undo()           mirror()           boundingbox()
  91.     pow()        delete()         pathclone()        getfile()
  92.     sinh()       cut()            pathextrude()      randu()
  93.     tanh()       copy()           railclone()        editbegin()
  94.     hypot()      paste()          railextrude()      editend()
  95.     vmag()       load()           axisdrill()        fglayers()
  96.     rad()        save()           soliddrill()       bglayers()
  97.     deg()        setlayer()       boolean()          getempty()
  98.     min()        setblayer()      bevel()            getemptyfg()
  99.     max()        fixedflex()      shapebevel()       getemptybg()
  100.     range()      autoflex()       smoothshift()      moninit()
  101.     select()     deformregion()   flip()             monstep()
  102.     step()       move()           triple()           monend()
  103.     round()      shear()          freezecurves()     reqbegin()
  104.     frac()       magnet()         alignpols()        reqend()
  105.     gamma()      rotate()         removepols()       reqpost()
  106.     fac()        twist()          unifypols()        addcontrol()
  107.     cot()        vortex()         subdivide()        getvalue()
  108.     sec()        scale()          fracsubdivide()    listadd()
  109.     csc()        taper()          sel_point()        listremove()
  110.     pointcount() addcurve()       pointinfo()        pointmove()
  111.     polycount()  addquad()        polynormal()       polysurface()
  112.     addpoint()   addtriangle()    rempoint()         polypoints()
  113.     addpolygon() polyinfo()       rempoly()
  114.  
  115. As part of my alpha testing of this plugin, I have ported over to BML
  116. almost all of the plugins I have written in C over the last few weeks.
  117. These include:
  118.  
  119.     bubbles.bml
  120.     gears.bml
  121.     planpnt.bml
  122.     prtlclon.bml
  123.     wrapsphe.bml
  124.  
  125. If you wish to have a look at BML, I have placed these ported (and
  126. fully functional under the current BML!) plugins into my anonymous FTP
  127. account to satisfy your curiosity:
  128.  
  129.            ftp.netcom.com:/pub/bh/bhood/plugins/BML
  130.  
  131. If you simply cannot wait, well then here is bubbles.bml:
  132.  
  133. -------------------------------------------------------------------------------
  134. #pragma code 500
  135. #pragma symbols 100
  136. #pragma labels 50
  137. #pragma warnings
  138.  
  139. main
  140. {
  141.     var items[3];
  142.     var sphereType,tessLevel,maxRadius;
  143.     var minRadius,globeSides,globeSegments;
  144.     var surface;
  145.     var c1,c2,c3,c4,c5,c6,c7;
  146.  
  147.     sphereType = 2; // Tesselated
  148.     tessLevel = 2;
  149.     maxRadius = 5.0;
  150.     minRadius = 1.0;
  151.     globeSides = 16;
  152.     globeSegments = 8;
  153.     surface = "Bubble";
  154.  
  155.     // request some parameters
  156.  
  157.     reqbegin("Bubbles");
  158.  
  159.     items[1] = "Globe";
  160.     items[2] = "Tessalated";
  161.     items[3] = nil;
  162.     c1 = addcontrol(sphereType,"Sphere Type",items);
  163.  
  164.     c2 = addcontrol(tessLevel,"Tesselation Level");
  165.     c3 = addcontrol(maxRadius,"Maximum Radius");
  166.     c4 = addcontrol(minRadius,"Minimum Radius");
  167.     c5 = addcontrol(globeSides,"Globe Sides");
  168.     c6 = addcontrol(globeSegments,"Globe Segments");
  169.     c7 = addcontrol(surface,"Surface");
  170.  
  171.     if(reqpost())
  172.     {
  173.         sphereType    = getvalue(c1);
  174.         tessLevel     = getvalue(c2);
  175.         maxRadius     = getvalue(c3);
  176.         minRadius     = getvalue(c4);
  177.         globeSides    = getvalue(c5);
  178.         globeSegments = getvalue(c6);
  179.         surface       = getvalue(c7);
  180.     }
  181.     else
  182.         return;  // the interpreter will automagically
  183.                  // do a reqend() if we forget to
  184.  
  185.     reqend();
  186.  
  187.     var pointCount,x;
  188.  
  189.     pointCount = editbegin();
  190.  
  191.     var vectors[pointCount];
  192.  
  193.     moninit(pointCount,"Removing points...");
  194.  
  195.     x = 0;
  196.     while(x < pointCount)
  197.     {
  198.         vectors[x + 1] = pointinfo(points[x + 1]);
  199.         rempoint(points[x + 1]);
  200.  
  201.         monstep();
  202.  
  203.         ++x;
  204.     }
  205.  
  206.     editend();
  207.     monend();
  208.  
  209.     var percent,rad,v;
  210.  
  211.     moninit(pointCount,"Creating bubbles...");
  212.  
  213.     x = 0;
  214.     while(x < pointCount)
  215.     {
  216.         percent = randu();
  217.  
  218.         rad = (minRadius + ((maxRadius - minRadius) * percent));
  219.  
  220.         v = vectors[x + 1];
  221.  
  222.         if(sphereType == 1)
  223.             makeball(<rad,rad,rad>,globeSides,globeSegments,<v.x,v.y,v.z>);
  224.         else
  225.             maketesball(<rad,rad,rad>,tessLevel,<v.x,v.y,v.z>);
  226.  
  227.         monstep();
  228.  
  229.         ++x;
  230.     }
  231.  
  232.     monend();
  233.  
  234.     setsurface(surface);
  235. }
  236. -------------------------------------------------------------------------------
  237.  
  238. HERE'S THE DEAL:
  239.  
  240. When it's available (i.e., when I'm happy with it), I'm going to make the
  241. BETA version of BML available for purchase.  Registered owners of the BETA
  242. version will get a free upgrade to the full release when it has settled
  243. down (now, where have I heard this marketing ploy before? =|^).  Those
  244. of you who go out on a limb (it'll be a really *thick* limb, I'm sure) with
  245. the BETA version will receive a discounted price that people who register
  246. the full release will not.
  247.  
  248. AND THE PRICE:
  249.  
  250. Since I've alienated both my family and, potentially, my employer, I'm going
  251. to charge for this one.  I've put a lot of time into this (much more than
  252. the two weeks above - it's a long and somewhat interesting story), and I'd
  253. like to see something for it this time.
  254.  
  255. However, as I said, I'm going to keep it affordable.  Pre-release BETA
  256. registration, which will hopefully include documentation, will be around $30.
  257. When I release the full version, it will likely be around $50.  Of course,
  258. I'm very tired and punchy right now, so I'll probably look at this tomorrow
  259. and wonder what the hell I was thinking.  =|^)
  260.  
  261. So, tell your friends.  Tell your enemies.  Modeler scripting for non-Amiga
  262. platforms is on it's way.  I'll keep you posted on my progress.
  263.  
  264. Sorry for the length of this message.  G'night.
  265.  
  266. Render me gone,               |||
  267. Bob                         ^(===)^
  268. -------------------------oOO--(_)--OOo--------------------------------------
  269. Bob Hood            | Bureaucracy destroys initiative.  There is little that
  270.                     | bureaucrats hate more than innovation, especially
  271. Work: 303-730-1324  | innovation that produces better results than the old
  272. Home: 303-980-8392  | routines.  Improvements always make those at the top
  273. bhood@netcom.com    | of the heap look inept.  Who enjoys appearing inept?
  274. hood@cqgrd.com      |                               - Frank Herbert
  275. ----------------------------------------------------------------------------
  276. --
  277. bhood@netcom.com (robert hood) sent this message.
  278. To Post a Message           : lightwave@webcom.com
  279. Un/Subscription Requests To : lightwave-request@webcom.com
  280. (DIGEST)                 or : lightwave-digest-request@webcom.com
  281. Administrative Items To     : owner-lightwave@webcom.com